package com.dtease.agent.biz.ai.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.time.LocalDateTime;
import java.io.Serializable;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * AI聊天会话记录表，存储用户与AI的对话记录及上下文信息
 * </p>
 *
 * @author chentl
 * @since 2025-05-12
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("bas_chat_histories")
public class BasChatHistories implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键，唯一标识会话记录
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 工作空间ID
     */
    private String workspaceId;

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 会话ID，格式为：{tenant_id}_{workspace_id}_{user_id}
     */
    private String sessionId;

    /**
     * 用户意图，取值如：TABLE_SEARCH（表查询）、SQL_GENERATE（sql代码生成）
     */
    private String purposeCode;

    /**
     * 大模型类型，取值如：DeepSeek-V3、DeepSeek-R1(671B)）
     */
    private String aiType;

    /**
     * 聊天上下文（jsonb类型）
     */
    private String context;

    /**
     * 消息类型，取值：human（人类）、ai（人工智能）
     */
    private String messageType;

    /**
     * 消息内容
     */
    private String content;

    /**
     * 创建时间，默认当前时间
     */
    private LocalDateTime ctime;

    /**
     * 修改时间，默认当前时间
     */
    private LocalDateTime mtime;

    /**
     * 删除标识，0表示正常，1表示已删除
     */
    private Integer invalid;

    /**
     * 标题
     */
    private String title;


}
